[请教]用c++判断任意小于100位十进制数是否素数

来源:百度知道 编辑:UC知道 时间:2024/09/21 21:02:33
[请教]用c++判断任意小于100位十进制数是否素数

这是个算法问题,可以用M-R法进行素性检验,具体做法如下:
设被检验数为N,则 N-1 = 2^(s)*r, s≥1,这是可以做到的;
①随机选取整数a,1<a<N-1
②如果a^r≡1(或者N-1) (mod N),返回不确定;
③否则k=(a^r mod N),然后j=0 to s-1循环:
k=k^2, 如果k≡N-1 (mod N)返回不确定;
④到了这一步,就返回是合数;

这是一个随机算法,返回一次不确定,则是合数的概率为0.25,可以选择n个随机数进行判断,若都返回不确定,则合数概率为0.25^n,已经很大很大可能是素数了,这个算法效率较高,运用较广,另外至今还没有确定的多项式算法可以进行素性测试